import axios from 'axios'
import store from '@/store/index.js'
// 导入大数字依赖
import jsonBigInt from 'json-bigint'

const instance = axios.create({
  // baseURL: 'http://ttapi.research.itcast.cn'
  // baseURL: 'http://ttapi.research.itcast.cn/app'
  baseURL: 'http://toutiao-app.itheima.net',
  // 用户自定义后端返回的原始数据(数据没做任何操作,执行顺序先于响应拦截器)
  // 它的执行结果是响应拦截器的参数(响应拦截器的数据是通过这一步预处理后来的)
  transformResponse: [function (data) {
    // axios 的默认操作(自动转化数据以便使用,造成大数字失真问题的根源) -> JSON.parse(data)
    try {
      // 这里为什么没有进行转换字符串操作?
      // 在 url 拼接的时候将其与字符串拼接,也就无形间完成了字符串的转换操作
      return jsonBigInt.parse(data)
    } catch (error) {
      // console.error(error)
      return data
    }
  }]

})

// 请求拦截器 统一设置请求头
instance.interceptors.request.use(config => {
// Do something before request is sent\
  // 判断是否有 user 如果没有(且不加判断,就会报错)
  if (store.state.user) {
    config.headers.Authorization = `Bearer ${store.state.user.token}`
  }
  return config
}, error => {
// Do something with request error
  return Promise.reject(error)
})

export default instance
